package simple.cashflow.model;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

@Entity
@Table(name="t_proyek")
public class Proyek implements Serializable {
	
	@Id
	@Column(name="kode_proyek")
	private String kodeProyek;
	
	@Column(name="nama_proyek")
	private String namaProyek;
	
	@Column(name="owner_proyek")
	private String ownerProyek;
	
	@Column(name="tanggal_mulai")
	@Temporal(TemporalType.DATE)
	private Date tanggalMulai;
	
	@Column(name="tanggal_selesai")
	@Temporal(TemporalType.DATE)
	private Date tanggalSelesai;
	
	@Column(name="harga_proyek")
	private BigDecimal hargaProyek;
	
	@Column(name="list_pemasukan")
	@OneToMany(mappedBy="project")
	@Cascade(CascadeType.ALL)
	private List<Pemasukan> listPemasukan = new ArrayList<Pemasukan>();
	
	public Proyek(){
		
	}
	
	public Proyek(String kodePro, String namaPro, String ownerPro, Date tangMul, 
			Date tangSel, BigDecimal hargaPro){
		this.kodeProyek = kodePro;
		this.namaProyek = namaPro;
		this.ownerProyek = ownerPro;
		this.tanggalMulai = tangMul;
		this.tanggalSelesai = tangSel;
		this.hargaProyek = hargaPro;
	}
	
	public String getKodeProyek() {
		return kodeProyek;
	}
	public void setKodeProyek(String kodeProyek) {
		this.kodeProyek = kodeProyek;
	}
	
	public String getNamaProyek() {
		return namaProyek;
	}
	public void setNamaProyek(String namaProyek) {
		this.namaProyek = namaProyek;
	}
	
	public String getOwnerProyek() {
		return ownerProyek;
	}
	public void setOwnerProyek(String ownerProyek) {
		this.ownerProyek = ownerProyek;
	}
	
	public Date getTanggalMulai() {
		return tanggalMulai;
	}
	public void setTanggalMulai(Date tanggalMulai) {
		this.tanggalMulai = tanggalMulai;
	}
	
	public Date getTanggalSelesai() {
		return tanggalSelesai;
	}
	public void setTanggalSelesai(Date tanggalSelesai) {
		this.tanggalSelesai = tanggalSelesai;
	}
	
	public BigDecimal getHargaProyek() {
		return hargaProyek;
	}
	public void setHargaProyek(BigDecimal hargaProyek) {
		this.hargaProyek = hargaProyek;
	}
	
	public List<Pemasukan> getListPemasukan() {
		return listPemasukan;
	}
	public void setListPemasukan(List<Pemasukan> listPemasukan) {
		this.listPemasukan = listPemasukan;
	}
	
	@Override
	public String toString() {
		return "Proyek [kodeProyek=" + kodeProyek + ", namaProyek="
				+ namaProyek + ", ownerProyek=" + ownerProyek
				+ ", tanggalMulai=" + tanggalMulai + ", tanggalSelesai="
				+ tanggalSelesai + ", hargaProyek=" + hargaProyek
				+ ", listPemasukan=" + listPemasukan + "]";
	}
	
	public void tambahPemasukan(Pemasukan pemasuk){
		pemasuk.setProyek(this);
		getListPemasukan().add(pemasuk);
	}
	
	
	
}
